<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>

        <script>
            // 由于提升 机制，函数和变量的声明可以在调用之后
            add(2)
            // 小驼峰 不能数字开头 可以 字母数字下划线 美元
            function sayHi() {
                document.writeln('Hi')
            }
            // 如果形参没有值，默认就是 undefined
            // 可以给默认值，如果前面参数设置了默认值，后面也要设置，否则调用时候 ( , 5) 会报错 (5, ) 不报错
            function add(a = 0, b = 0) {
                document.writeln((a + b).toString())
            }
            // 函数名相同 ，后面会覆盖前面， 没有类似java的重载
            sayHi()
            sayHi()
            sayHi()
            add(1)
            // 全局作用域：script标签内的，还有单独的js文件的
            // 局部作用域：函数内的
            // 如果函数内有和全局变量重名的变量，函数内会优先使用内部的变量
            // 如果函数内 不声明 直接使用一个新变量，它会变成全局的
            // 注意：在函数内 改变全局变量，会直接改变全局，而python则不会，除非用 global 关键字
        </script>

    </body>
</html>